#include <iostream>
#include <string>

using namespace std;

// // 这里常考一道笔试题：sizeof(Base)是多少？
// class Base
// {
// public:
// 	virtual void Func1()
// 	{
// 		cout << "Func1()" << endl;
// 	}

// private:
// 	int _b = 1;
// };

// int main(int argc, char const *argv[])
// {
// 	Base b;
// 	cout << sizeof(b) << endl;
// 	return 0;
// }

// 针对上面的代码我们做出以下改造
// 1.我们增加一个派生类Derive去继承Base
// 2.Derive中重写Func1
// 3.Base再增加一个虚函数Func2和一个普通函数Func3
class Base
{
public:
	virtual void Func1()
	{
		cout << "Base::Func1()" << endl;
	}
	virtual void Func2()
	{
		cout << "Base::Func2()" << endl;
	}

	void Func3()
	{
		cout << "Base::Func3()" << endl;
	}

private:
	int _b = 1;
};

class Derive : public Base
{
public:
	virtual void Func1()
	{
		cout << "Derive::Func1()" << endl;
	}

private:
	int _d = 2;
};

int main()
{
	Base b;
	Derive d;
	cout << sizeof(b) << endl;
	cout << sizeof(d) << endl;

	return 0;
}
